<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // --------------------------------------------------------------
    // // 1.
    // function Foo() {
    //     getName = function () { alert(1); };
    //     return this;
    // }
    // Foo.getName = function () { alert(2); };
    // Foo.prototype.getName = function () { alert(3); };
    // var getName = function () { alert(4); };
    // function getName() { alert(5); }
    // //请写出以下输出结果：
    // Foo.getName();//2
    // getName();//4
    // Foo().getName();//1
    // getName();//1
    // new Foo.getName();//2
    // new Foo().getName();//3
    // new new Foo().getName();//3




    // --------------------------------------------------------------
    // // 2.
    // var fullname = 'John Doe';
    // var obj = {
    //     fullname: 'Colin Ihrig',
    //     prop: {
    //         fullname: 'Aurelio De Rosa',
    //         getFullname: function () {
    //             return this.fullname;
    //         }
    //     }
    // };
    // console.log(obj.prop.getFullname());//Aurelio De Rosa

    // var test = obj.prop.getFullname;
    // console.log(test());//John Doe

    // --------------------------------------------------------------
    // // 3.
    // var name = 222
    // var a = {
    //     name: 111,
    //     say: function () {
    //         console.log(this.name)
    //     }
    // }
    // var fun = a.say
    // fun()//222
    // a.say()//111
    // var b = {
    //     name: 333,
    //     say: function (fn) {
    //         fn()
    //     }
    // }
    // b.say(a.say)//222
    // b.say = a.say
    // b.say()//333
    // // --------------------------------------------------------------
    // // 4.
    // window.foo = 123
    // function print() {
    //     this.foo = 234
    //     console.log(this);
    //     console.log(window.foo);


    // }
    // window.print();//window    234
    // --------------------------------------------------------------
    // // 5.
    // a = 1;
    // function foo() {
    //     console.log(this.a);


    // }
    // const obj = {
    //     a: 10,
    //     bar() {
    //         foo()
    //     }
    // }
    // obj.bar();//1

    // --------------------------------------------------------------
    // // 6.
    // var a = 1;
    // function outer() {
    //     var a = 2;
    //     function inner() {
    //         console.log(this.a);


    //     }
    //     inner()

    // }
    // outer();//1

    // --------------------------------------------------------------
    // // 7.
    // var obj = {
    //     a: 1,
    //     foo() {
    //         console.log(this.a);

    //     }
    // }
    // var a = 2;
    // var foo = obj.foo;
    // var obj2 = { a: 3, foo: obj.foo }
    // obj.foo();//1
    // foo();//2
    // obj2.foo();//3


</script>

</html>